// 引入vue
import Vue from "vue"
// 引入App 外壳组件
import App from "./App.vue"

/*
创建事件总线，也就是意味着我们要创建一个不属于
任何组件的x，利用它来通知其它的组件

之前我们知道了
VueComponent.prototype.__proto__ = Vue.prototype

我们可以让那个所有的组件实例对象看到这个x对象

同时我们还要满足，对象x可以调用$off $on $emit
之前我们是可以通过vc来直接调用这些函数，那么也就意味着
只要让这个对象x成为一个vc实例就可以了
*/
// const Demo = Vue.extend({})
// 由于通过Vue.extend返回的是一个VueComponet的函数，所以我们可以通过
// new 来创建这个实力对象
// const d = new Demo()
// Vue.prototype.x = d
// 创建vm
new Vue({
    el:"#app",
    render:h=>h(App),
    beforeCreate(){
        // 第二种简便的写法
        /**
         * 由于我们一直说的是vc,其实本质上
         * 我们依靠的还是vm，vc和vm其实也就差一个template模版的解析属性
         * 
         * 所以我们可以完全在生命周期，还没开始模版解析，事件还没挂载的
         * 时候，将这个总线放上去，也就是将vm自己放上去
         * 
         * 也叫做bus，总线
         */

        Vue.prototype.$bus = this
    }
})